package sdeapv.util;

import java.util.ArrayList;
import java.util.List;

import sdeapv.bean.Evento;
import sdeapv.bean.OuLogico;
import sdeapv.bean.Regra;

public class UtilRegra {
	
	/**
	 * Regra 4
	 */
	public static Regra getDTP1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe24a48(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 10
	 */
	public static Regra getDTP2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe24a48(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 7
	 */
	public static Regra getDTP3(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAte24(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe24a48(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 14
	 */
	public static Regra getDTP4(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAte24(false, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe24a48(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 1
	 */
	public static Regra getBCG1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.ulceraMaiorQue1cm(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAte6Meses(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 10
	 */
	public static Regra getBCG2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.ulceraMaiorQue1cm(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAte6Meses(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 3
	 */
	public static Regra getBCG3(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.abscessoSubcutaneoFrio(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalNaoSupurada(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalSupurada(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte3Meses(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 8
	 */
	public static Regra getBCG4(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.abscessoSubcutaneoFrio(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalNaoSupurada(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalSupurada(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte3Meses(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 29
	 */
	public static Regra getDuplaViral1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.nodulo(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAposVacina(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 30
	 */
	public static Regra getDuplaViral2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.nodulo(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAposVacina(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 6
	 */
	public static Regra getDuplaViral3(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.exantemaGeneralizado(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalNaoSupurada(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.iniciouDo7a14(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 13
	 */
	public static Regra getDuplaViral4(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(false, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.exantemaGeneralizado(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalNaoSupurada(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.iniciouDo7a14(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 21
	 */
	public static Regra getFebreAmarela1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.mialgia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouApartir3(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 22
	 */
	public static Regra getFebreAmarela2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.mialgia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouApartir3(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 23
	 */
	public static Regra getFebreAmarela3(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe24a48(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 24
	 */
	public static Regra getFebreAmarela4(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe24a48(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 17
	 */
	public static Regra getInfluenza1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.mialgia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe6a12(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 18
	 */
	public static Regra getInfluenza2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.mialgia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouDe6a12(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 19
	 */
	public static Regra getPneumococica1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.mialgia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 20
	 */
	public static Regra getPneumococica2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.mialgia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 2
	 */
	public static Regra getTetravalente1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAte24(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 9
	 */
	public static Regra getTetravalente2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAte24(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 25
	 */
	public static Regra getTetravalente3(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.nodulo(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAposVacina(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 26
	 */
	public static Regra getTetravalente4(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.nodulo(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAposVacina(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 27
	 */
	public static Regra getTripliceViral1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.nodulo(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAposVacina(true, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 28
	 */
	public static Regra getTripliceViral2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.nodulo(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.iniciouAposVacina(false, new OuLogico(0, false)));
				
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 5
	 */
	public static Regra getTripliceViral3(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(true, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.exantemaGeneralizado(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalNaoSupurada(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.iniciouDo7a14(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 12
	 */
	public static Regra getTripliceViral4(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(false, new OuLogico(0, false)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.exantemaGeneralizado(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.linfadenopatiaRegionalNaoSupurada(true, new OuLogico(2, true)));
		listaEvento.add(UtilEvento.iniciouDo7a14(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
	
	/**
	 * Regra 15
	 */
	public static Regra getHepatiteB1(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(true, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, true);
		
		return regra;
	}
	
	/**
	 * Regra 16
	 */
	public static Regra getHepatiteB2(String vacina){
		List<Evento> listaEvento = new ArrayList<Evento>();
		
		listaEvento.add(UtilEvento.dorCalorRubor(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.enduracao(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.cefaleia(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.febreMenor39(true, new OuLogico(1, true)));
		listaEvento.add(UtilEvento.iniciouAte24(false, new OuLogico(0, false)));
		
		Regra regra = new Regra(listaEvento, vacina, false);
		
		return regra;
	}
}
